﻿package meps.net {
	
	/**
	 * @version  1.0
	 * @author   meps
	 */
	public interface ILocalBridge {
		
		/**
		 * Целевой объект для удаленных вызовов его методов.
		 *
		 * @default  this
		 */
		function get target():Object;
		
		/**
		 * @private
		 */
		function set target(value:Object):void;
		
		/**
		 * Готовность двустороннего соединения.
		 */
		function get available():Boolean;
		
		/**
		 * Установить соединение.
		 *
		 * @param   имя канала;
		 *
		 * @return  true - начата установка соединения;
		 *          false - установка соединения невозможна при уже
		 *          установленном соединении, либо из-за неправильного имени
		 *          канала;
		 */
		function connect(name:String):Boolean;
		
		/**
		 * Вызвать удаленный метод.
		 *
		 * @param   имя метода;
		 *
		 * @param   аргументы;
		 *
		 * @return  true - вызов метода был запрошен или поставлен в очередь;
		 *          false - вызов метода невозможен;
		 */
		function call(method:String, ... params:Array /*Object*/):Boolean;
		
		/**
		 * Закрыть соединение.
		 *
		 * @return  true - соединение было закрыто;
		 *          false - соединение не может быть закрыто;
		 */
		function close():Boolean;
		
	}
	
}
